In a computer system, migration of a program may be performed. Migration of a program refers to making a program being executed on a certain computer executable on another computer. For example, when a computer executing a program has insufficient hardware performance, the program is migrated to a computer with a higher performance. In addition, when a cloud system is caused to execute a program having been executed on a computer installed locally, the program is also migrated to a computer in the cloud system.
A program has an operational environment specified to allow normal execution of the program. When the platform of the migration destination computer is not adapted to the operational environment specified in the program, the program may be migrated by installing the program in the migration destination computer. The platform refers to hardware resources and software resources such as the CPU (Central Processing Unit) and the OS (Operating System) which serve as the operational basis of the program. The type of CPU or OS of the platform, for example, is specified as a program's operating environment. The type of the CPU or OS is determined, for example, by the design concept (architecture) applied thereto.
When a program is migrated, there may be a case where the platform of the migration destination computer is not adapted to the operational environment specified in the program. In such a case, it is conceivable to recompile the program to be migrated provided that there exists the source code of the program, for example. The program may be migrated by installing, in the migration destination computer, the program acquired by recompilation from the source code for the migration destination computer.
On the other hand, there may exist a program whose source code is not available. When the source code is not available, binary conversion of the program is performed, for example. Binary conversion converts the binary code described in the program into a binary code adapted to the platform of the migration destination computer. A program may be migrated by installing the binary converted program in the migration destination computer.
In addition, it is also possible to migrate a program using an emulator, for example. An emulator is a tool which emulates, on a certain computer, the operational environment provided on another computer, allowing execution of a program for the emulated computer. When migrating a program using an emulator, the emulator emulates, on the migration destination computer, the operational environment provided on the migration source computer. The migration destination computer is caused to execute the program to be migrated via the emulator. There is, for example, a technique of emulating the BIOS operation by a BIOS (Basic Input/OutPut System) emulator, as a technique using an emulator.
See, for example, Japanese Laid-open Patent Publication No. 2009-169450.
With the conventional technique, however, it is difficult to balance between an early execution start of a program on the migration destination computer and an efficient execution of the program after the migration process is completed, when a program is migrated to a computer having a different platform.
For example, migration of a program by re-compilation or binary conversion allows efficient processing by the program whose binary code has been adapted to the platform of the migration destination computer after the migration process is completed. On the other hand, the program is not executable on the migration destination computer until re-compilation or binary conversion is successfully completed, which may delay the start of the execution of the program on the migration destination computer.
In addition, migration of a program using an emulator allows an early execution start of the program on the migration destination computer. On the other hand, the emulator is still operating after the migration of the program is completed, which makes the execution of the program inefficient as long as the emulator is operating after the migration of the program is completed. Inefficient execution of the program may cause decreased use efficiency of computer resources or lower processing speed.